
// 导入 App VNode 类型，render createVNode 函数
import { App, render, createVNode, VNode } from 'vue'
// 导入 Loading 组件
import Loading from './index.vue'
export default {
  // 插件导出可以为函数或对象形式
  // 函数形式默认为 install 并执行
  // 对象形式必须包含 install 方法，参数为 app 组件实例，可以将组件进行挂载以实现为全局的插件
  install(app: App) {
    // 将组件 Loading 转换为 VNode 形式
    const vnode: VNode = createVNode(Loading)
    // 将组件的 vnode 形式渲染到页面上，此处渲染到 document.body
    render(vnode, document.body)
    // 全局挂载使用或关闭插件的方法及控制显示的变量
    app.config.globalProperties.$loading1 = {
      show: vnode.component?.exposed?.show,
      hide: vnode.component?.exposed?.hide,
      flag: vnode.component?.exposed?.flag
    }
  }
}